package com.hrcx.mystery.pojo;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import javax.validation.constraints.NotNull;

import java.io.Serializable;

import java.math.BigDecimal;
import java.util.Date;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * 盲盒表
 *
 * @author LinXiPeng
 * @TableName eb_mystery
 */
@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value = "盲盒表", description = "暂无描述")
public class EbMystery implements Serializable {

    private static final long serialVersionUID = -5440051015651934497L;
    /**
     * 盲盒编号
     */
    @NotNull(message = "[盲盒编号]不能为空")
    @ApiModelProperty("盲盒编号")
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 盲盒名称
     */
    @NotBlank(message = "[盲盒名称]不能为空")
    @Size(max = 255, message = "编码长度不能超过255")
    @ApiModelProperty("盲盒名称")
    @Length(max = 255, message = "编码长度不能超过255")
    private String name;

    /**
     * 盲盒内商品的个数
     */
    @NotNull(message = "[盲盒内商品的个数]不能为空")
    @ApiModelProperty("盲盒内商品的个数")
    private Integer productcount;

    /**
     * 开盒单价
     */
    @NotNull(message = "[开盒单价]不能为空")
    @ApiModelProperty("开盒单价")
    private BigDecimal price;

    /**
     * 开盒次数
     */
    @NotNull(message = "[开盒次数]不能为空")
    @ApiModelProperty("开盒次数")
    private Integer opennum;

    /**
     * 分区
     */
    @NotNull(message = "[分区]不能为空")
    @ApiModelProperty("分区")
    private Integer scope;

    /**
     * 商家ID
     */
    @NotNull(message = "[商家ID]不能为空")
    @ApiModelProperty("商家ID")
    private Integer creatby;

    /**
     * 开启时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss", iso = DateTimeFormat.ISO.DATE_TIME)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @NotNull(message = "[开启时间]不能为空")
    @ApiModelProperty("开启时间")
    private Date starttime;

    /**
     * 创建时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss", iso = DateTimeFormat.ISO.DATE_TIME)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @NotNull(message = "[创建时间]不能为空")
    @ApiModelProperty("创建时间")
    private Date creattime;
    /**
     * 结束时间
     */
    @NotNull(message = "[结束时间]不能为空")
    @ApiModelProperty("结束时间")
    private Date endtime;

    /**
     * 奖池（利润池）
     */
    @NotNull(message = "[奖池（利润池）]不能为空")
    @ApiModelProperty("奖池（利润池）")
    private BigDecimal pond;

    /**
     * 成本池
     */
    @NotNull(message = "[成本池]不能为空")
    @ApiModelProperty("成本池")
    private BigDecimal costPond;

    /**
     * 投注池
     */
    @NotNull(message = "[投注池]不能为空")
    @ApiModelProperty("投注池")
    private BigDecimal bettingPond;

    /**
     * 利润比
     */
    @NotNull(message = "[利润比]不能为空")
    @ApiModelProperty("利润比")
    private Double profitShare;

    /**
     * 上限阈值
     */
    @NotNull(message = "[上限阈值]不能为空")
    @ApiModelProperty("上限阈值")
    private BigDecimal upperThreshold;

    /**
     * false：未开启 true：已开启
     */
    @NotNull(message = "[false：未开启 true：已开启 ]不能为空")
    @ApiModelProperty("false：未开启 true：已开启")
    private Boolean status;

    @NotNull(message = "利润周期不能为空")
    @ApiModelProperty("利润周期cron表达式")
    private String cycleCron;

    @ApiModelProperty("利润周期cron表达式描述")
    private String cycleCronDes;


    @ApiModelProperty("开始定时器编号")
    private Long startJob;

    @ApiModelProperty("停用定时器编号")
    private Long pauseJob;

    @ApiModelProperty("奖池周期定时器编号")
    private Long pondJob;


}
